﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using AcountingService.Messages;
using AcountingService.Messages.Dictionary;
using AcountingService.Messages.Report;
using AcountingService.Messages.Voucher;

namespace AcountingService
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IActionAccountingService" in both code and config file together.
    [ServiceContract]
    public interface IActionAccountingService
    {
        [OperationContract]
        AutoNumberResponse GetAutoNumbers(AutoNumberRequest request);
        /// <summary>
        /// Gets the token.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        [OperationContract]
        TokenResponse GetToken(TokenRequest request);

        /// <summary>
        /// Gets the units.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
         [OperationContract]
        UnitResponse GetUnits(UnitRequest request);

         /// <summary>
         /// Sets the units.
         /// </summary>
         /// <param name="request">The request.</param>
         /// <returns></returns>
         [OperationContract]
         UnitResponse SetUnits(UnitRequest request);

         /// <summary>
         /// 
         /// </summary>
         /// <param name="request"></param>
         /// <returns></returns>
         [OperationContract]
         DepartmentResponse GetDepartments(DepartmentRequest request);
         /// <summary>
         /// 
         /// </summary>
         /// <param name="request"></param>
         /// <returns></returns>
         [OperationContract]
         DepartmentResponse SetDepartments(DepartmentRequest request);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        CustomerResponse GetCustomers(CustomerRequest request);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        CustomerResponse SetCustomers(CustomerRequest request);


        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        VendorResponse GetVendors(VendorRequest request);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        VendorResponse SetVendors(VendorRequest request);

         [OperationContract]
        RefTypeResponse GetRefTypes(RefTypeRequest request);

        [OperationContract]
        VoucherTypeResponse GetVoucherTypes(VoucherTypeRequest request);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        AutoBusinessResponse GetAutoBusinesss(AutoBusinessRequest request);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        AutoBusinessResponse SetAutoBusinesss(AutoBusinessRequest request);


        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        DbOptionResponse GetDbOptions(DbOptionRequest request); 

        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        DbOptionResponse SetDbOptions(DbOptionRequest request); 


        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        EmployTestResponse GetEmployTests(EmployTestRequest request);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        EmployTestResponse SetEmployTests(EmployTestRequest request);
        

        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        AccountResponse GetAccounts(AccountRequest request);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        AccountResponse SetAccounts(AccountRequest request);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        StockResponse GetStocks(StockRequest request);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        StockResponse SetStocks(StockRequest request);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        InventoryItemResponse GetInventoryItems(InventoryItemRequest request);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        InventoryItemResponse SetInventoryItems(InventoryItemRequest request);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        ItemTransactionResponse GetItemTransactions(ItemTransactionRequest request);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        ItemTransactionResponse SetItemTransactions(ItemTransactionRequest request);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        ReportListResponse GetReportLists(ReportListRequest request);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        ReportListResponse SetReportLists(ReportListRequest request);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        ReportGroupResponse GetReportGroups(ReportGroupRequest request);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        ReportGroupResponse SetReportGroups(ReportGroupRequest request);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        FixedAssetCategoryResponse GetFixedAssetCategorys(FixedAssetCategoryRequest request);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        FixedAssetCategoryResponse SetFixedAssetCategorys(FixedAssetCategoryRequest request);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        FixedAssetResponse GetFixedAssets(FixedAssetRequest request);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [OperationContract]
        FixedAssetResponse SetFixedAssets(FixedAssetRequest request);

        [OperationContract]
        ReportResponse GetReports(ReportRequest request);
    }
}
